The present invention relates to computer architectures adapted for embedded processing and, in particular, to an embedded processor that may work with a variety of different memory types.
Embedded processors are typically intended to provide control of a specific hardware device into which it is embedded, for example, a household appliance or industrial device. The program executed by the embedded processor is normally stored in a non-volatile memory, for example, flash memory or downloaded from an external source.
For reasons of cost efficiency, embedded processors normally include the processing unit on the same integrated circuit as other system circuits such as input and output circuits used to communicate the device being controlled and a network interface when the embedded application includes a network connection.
An exception to this single “chip” integration is the memory system, such as random access memory (RAM) which, for reasons of flexibility, cost, and size may be implemented in one or more separate integrated circuits. Separating the RAM from the embedded processor allows greater flexibility in varying the amount of memory necessary for different embedded applications, allows for more efficient fabrication of the memory, and allows the designer to take advantage of rapidly changing advances in memory technology and design.
The embedded processor may also incorporate into the integrated circuit a small “boot” memory, typically a read-only-memory holding a “bootstrap program”. The term bootstrap refers to the phrase “pulling oneself up by one's bootstraps”, that is, raising oneself through one's own, unaided effort. Analogously, the bootstrap program provides the embedded processor with a compact program sufficient so that the embedded processor may load a much more complex program (typically the control program) without external support. The bootstrap program is usually invoked after resetting or at powering-up of the device.
During the booting process, general memory is required for the temporary storage of register values and other variables. For this reason, the bootstrap program must normally be programmed with sufficient information about the external memory to be able to successfully communicate with this memory. This preprogramming of the boot ROM with the particular external memory setup data limits the use of the embedded processor to that particular memory type.
What is needed is an embedded processor that may be used flexibly with a wide variety of different external memory types.